<?php
namespace app\backend\org;

/**
 * 无限极分类，
 * Class Unlimited
 * @package app\backend\org
 */
class Unlimited
{
    // 没有层次关系的父子级，返回可能的多维数组
    // 主要用于左侧菜单栏获取级联数据
    public static function multi($cate, $pid_key = 'pid', $id_key = 'id', $pid = 0){
        $arr = array();
        foreach ($cate as $v) {
            if ($v[$pid_key]  == $pid) {
                $v['child'] = self::multi($cate, $pid_key, $id_key, $v[$id_key]);
                $arr[] = $v;
            }
        }
        return $arr;
    }

    // 有层次关系的父子级，返回可能的多维数组
    // 主要用于角色的父子级关系显示
    /*public static function multiIndent($cate, $pid_key = 'pid', $id_key = 'id', $level = 0, $html='----', $pid = 0){
        $arr = array();
        foreach ($cate as $v) {
            if ($v[$pid_key]  == $pid) {
                $v['level'] = $level + 1;
                $v['html'] = ($level > 0) ? str_pad($html, $level) : '';
                $v['child'] = self::multiIndent($cate, $pid_key, $id_key, $level + 1, $html, $v[$id_key]);
                $arr[] = $v;
            }
        }
        return $arr;
    }*/

    // 有层次关系的父子级，返回可能的一维数组，层次关系用 '----' 的多少来进行显示
    // 主要用于角色的父子级关系显示
    public static function multiIndent($cate, $pid_key = 'pid', $id_key = 'id', $level = 0, $html='--', $pid = 0){
        $arr = array();
        foreach ($cate as $v) {
            if ($v[$pid_key]  == $pid) {
                $v['level'] = $level + 1;
                $v['html'] = ($level > 0) ? str_repeat($html, $level) : '';
                $arr[] = $v;
                $arr = array_merge($arr, self::multiIndent($cate, $pid_key, $id_key, $level + 1, $html, $v[$id_key]));
            }
        }
        return $arr;
    }

}